export class Echarts {
  eventMap = new Map();
  constructor(webview) {
    this.webview = webview;
    this.options = null;
  }
  setOption() {
    this.options = arguments;
    console.log("setOption1");
    this.webview.evalJs(`setOption(${JSON.stringify(arguments)})`);
  }
  getOption() {
    return this.options;
  }
  showLoading() {
    this.webview.evalJs(`showLoading(${JSON.stringify(arguments)})`);
  }
  hideLoading() {
    this.webview.evalJs(`hideLoading()`);
  }
  clear() {
    this.webview.evalJs(`clear()`);
  }
  dispose() {
    this.webview.evalJs(`dispose()`);
  }
  resize(size) {
    if (size) {
      this.webview.evalJs(`resize(${JSON.stringify(size)})`);
    } else {
      this.webview.evalJs(`resize()`);
    }
  }
  on(type, ...args) {
    const query = args[0];
    const useQuery = query && typeof query != "function";
    const param = useQuery ? [type, query] : [type];
    const key = `${type}${useQuery ? JSON.stringify(query) : ""}`;
    const callback = useQuery ? args[1] : args[0];
    if (typeof callback == "function") {
      this.eventMap.set(key, callback);
    }
    this.webview.evalJs(`on(${JSON.stringify(param)})`);
    console.warn("nvue 暂不支持事件");
  }
  dispatchAction(type, options) {
    const handler = this.eventMap.get(type);
    if (handler) {
      handler(options);
    }
  }
  // 不让报错 无实际作用
  isDisposed() {
    return !!this.webview;
  }
}
